home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 301-325 / disk_316 / iff2c / src / main.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  3KB  |  110 lines

  1. /*                                       */
  2. /* Iff2C - Converts an Iff ILBM file to C source               */
  3. /*                                       */
  4. /* Last updates:                               */
  5. /*  v0.30, 89.0512,  fixed minor output bug, -ghg-               */
  6. /*  v0.29, 89.0501,  plane pick option now works, -ghg-            */
  7. /*  v0.28, 89.0430,  -lsdh options added, jm Forgeas               */
  8. /*  v0.27, 88.1113,  original coding by Gauthier Groult            */
  9. /*                                       */
  10.  
  11. #include <stdio.h>
  12. #include <exec/types.h>
  13. #include <graphics/gfx.h>
  14. #include <libraries/dos.h>
  15. #include <iff/ilbm.h>
  16. #include <iff/readpict.h>
  17. #include <iff/remalloc.h>
  18. #include "iff2c.h"
  19.  
  20. struct     GfxBase  *GfxBase;
  21.  
  22. VOID
  23. main(argc, argv)
  24. UBYTE argc, **argv;
  25. {
  26.   UBYTE       arg=1,
  27.           flags = PRINT_COMMENTS | PRINT_IMAGE | COMPUTE_ONOFF |
  28.               STATIC_DATA | PRINT_DATA | LATTICE_CHIP;
  29.   LONG          file;
  30.   IFFP          iffp = NO_FILE;
  31.   ILBMFrame   iFrame;
  32.   struct      BitMap bitmap;
  33.  
  34.     if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 0))) exit(1);
  35.  
  36.     if (argc==1)
  37.     {
  38.     fputs("Usage: Iff2C [-cidpslh] <file> [<file>...]\n", stderr);
  39.     fputs("       -c: switches comment output, default on\n", stderr);
  40.     fputs("       -i: switches image structure output, default on\n", stderr);
  41.     fputs("       -d: switches data words output, default on\n", stderr);
  42.     fputs("       -p: plane on/off computation, default on\n", stderr);
  43.     fputs("       -s: switches 'static' image data, default on\n", stderr);
  44.     fputs("       -l: switches Lattice keyword 'chip', default on\n", stderr);
  45.     fputs("       -h: header and trailer words (sprite), default off\n", stderr);
  46.     fputs("Iff2C v0.30, by Gauthier Groult & Jm Forgeas, 89.0512, pd\n", stderr);
  47.     goto CLEANUP;
  48.     }
  49.  
  50.     while (arg<argc)
  51.     {
  52.     switch(argv[arg][0])
  53.         {
  54.         case '-':
  55.         if (argc==2)
  56.             {
  57.             fputs("Iff2c: input file name not specified\n", stderr);
  58.             goto CLEANUP;
  59.             }
  60.  
  61.         switch(argv[arg][1])
  62.             {
  63.             case 'c': flags &= ~PRINT_COMMENTS; break;
  64.             case 'i': flags &= ~PRINT_IMAGE;    break;
  65.             case 'd': flags &= ~PRINT_DATA;     break;
  66.             case 'p': flags &= ~COMPUTE_ONOFF;  break;
  67.             case 's': flags ^=  STATIC_DATA;    break;
  68.             case 'h': flags ^=  SPRITE_HEADER;  break;
  69.             case 'l': flags ^=  LATTICE_CHIP;   break;
  70.             default:
  71.                fputs("Iff2c: invalid arguments, try Iff2c for help\n", stderr);
  72.                goto CLEANUP;
  73.             }
  74.          break;
  75.  
  76.         default:
  77.         if (file = Open(argv[arg], MODE_OLDFILE))
  78.             {
  79.             iffp = ReadPicture(file, &bitmap, &iFrame, ChipAlloc);
  80.             Close(file);
  81.             }
  82.         else
  83.             {
  84.             fprintf(stderr, "Iff2c: wrong file name %s\n", argv[arg]);
  85.             goto CLEANUP;
  86.             }
  87.         if (iffp != IFF_DONE)
  88.             {
  89.             fprintf(stderr, "Iff2c: wrong file format %s\n", argv[arg]);
  90.             goto CLEANUP;
  91.             }
  92.  
  93.         BMap2C( stdout, argv[arg], bitmap.Planes[0],
  94.             iFrame.bmHdr.x, iFrame.bmHdr.y,
  95.             iFrame.bmHdr.w, iFrame.bmHdr.h,
  96.             bitmap.Depth, flags );
  97.  
  98.         if (bitmap.Planes[0]) RemFree(bitmap.Planes[0]);
  99.         break;
  100.         }
  101.     arg++;
  102.     }
  103.  
  104.    CLEANUP:
  105.     CloseLibrary(GfxBase);
  106.     exit(0);
  107. }
  108.  
  109.  
  110.